home *** CD-ROM | disk | FTP | other *** search
-
-
-
- DDDDLLLLAAAASSSSDDDD6666((((3333SSSS)))) DDDDLLLLAAAASSSSDDDD6666((((3333SSSS))))
-
-
-
- NNNNAAAAMMMMEEEE
- DLASD6 - compute the SVD of an updated upper bidiagonal matrix B obtained
- by merging two smaller ones by appending a row
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- SUBROUTINE DLASD6( ICOMPQ, NL, NR, SQRE, D, VF, VL, ALPHA, BETA, IDXQ,
- PERM, GIVPTR, GIVCOL, LDGCOL, GIVNUM, LDGNUM, POLES,
- DIFL, DIFR, Z, K, C, S, WORK, IWORK, INFO )
-
- INTEGER GIVPTR, ICOMPQ, INFO, K, LDGCOL, LDGNUM, NL, NR, SQRE
-
- DOUBLE PRECISION ALPHA, BETA, C, S
-
- INTEGER GIVCOL( LDGCOL, * ), IDXQ( * ), IWORK( * ), PERM( * )
-
- DOUBLE PRECISION D( * ), DIFL( * ), DIFR( * ), GIVNUM(
- LDGNUM, * ), POLES( LDGNUM, * ), VF( * ), VL( * ),
- WORK( * ), Z( * )
-
- IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
- These routines are part of the SCSL Scientific Library and can be loaded
- using either the -lscs or the -lscs_mp option. The -lscs_mp option
- directs the linker to use the multi-processor version of the library.
-
- When linking to SCSL with -lscs or -lscs_mp, the default integer size is
- 4 bytes (32 bits). Another version of SCSL is available in which integers
- are 8 bytes (64 bits). This version allows the user access to larger
- memory sizes and helps when porting legacy Cray codes. It can be loaded
- by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
- only one of the two versions; 4-byte integer and 8-byte integer library
- calls cannot be mixed.
-
- PPPPUUUURRRRPPPPOOOOSSSSEEEE
- DLASD6 computes the SVD of an updated upper bidiagonal matrix B obtained
- by merging two smaller ones by appending a row. This routine is used only
- for the problem which requires all singular values and optionally
- singular vector matrices in factored form. B is an N-by-M matrix with N
- = NL + NR + 1 and M = N + SQRE. A related subroutine, DLASD1, handles
- the case in which all singular values and singular vectors of the
- bidiagonal matrix are desired.
-
- DLASD6 computes the SVD as follows:
-
- ( D1(in) 0 0 0 )
- B = U(in) * ( Z1' a Z2' b ) * VT(in)
- ( 0 0 D2(in) 0 )
-
- = U(out) * ( D(out) 0) * VT(out)
-
- where Z' = (Z1' a Z2' b) = u' VT', and u is a vector of dimension M with
- ALPHA and BETA in the NL+1 and NL+2 th entries and zeros elsewhere; and
- the entry b is empty if SQRE = 0.
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- DDDDLLLLAAAASSSSDDDD6666((((3333SSSS)))) DDDDLLLLAAAASSSSDDDD6666((((3333SSSS))))
-
-
-
- The singular values of B can be computed using D1, D2, the first
- components of all the right singular vectors of the lower block, and the
- last components of all the right singular vectors of the upper block.
- These components are stored and updated in VF and VL, respectively, in
- DLASD6. Hence U and VT are not explicitly referenced.
-
- The singular values are stored in D. The algorithm consists of two
- stages:
-
- The first stage consists of deflating the size of the problem
- when there are multiple singular values or if there is a zero
- in the Z vector. For each such occurence the dimension of the
- secular equation problem is reduced by one. This stage is
- performed by the routine DLASD7.
-
- The second stage consists of calculating the updated
- singular values. This is done by finding the roots of the
- secular equation via the routine DLASD4 (as called by DLASD8).
- This routine also updates VF and VL and computes the distances
- between the updated singular values and the old singular
- values.
-
- DLASD6 is called from DLASDA.
-
-
- AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
- ICOMPQ (input) INTEGER Specifies whether singular vectors are to be
- computed in factored form:
- = 0: Compute singular values only.
- = 1: Compute singular vectors in factored form as well.
-
- NL (input) INTEGER
- The row dimension of the upper block. NL >= 1.
-
- NR (input) INTEGER
- The row dimension of the lower block. NR >= 1.
-
- SQRE (input) INTEGER
- = 0: the lower block is an NR-by-NR square matrix.
- = 1: the lower block is an NR-by-(NR+1) rectangular matrix.
-
- The bidiagonal matrix has row dimension N = NL + NR + 1, and
- column dimension M = N + SQRE.
-
- D (input/output) DOUBLE PRECISION array, dimension ( NL+NR+1 ).
- On entry D(1:NL,1:NL) contains the singular values of the
- upper block, and D(NL+2:N) contains the singular values
- of the lower block. On exit D(1:N) contains the singular values of
- the modified matrix.
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- DDDDLLLLAAAASSSSDDDD6666((((3333SSSS)))) DDDDLLLLAAAASSSSDDDD6666((((3333SSSS))))
-
-
-
- VF (input/output) DOUBLE PRECISION array, dimension ( M )
- On entry, VF(1:NL+1) contains the first components of all
- right singular vectors of the upper block; and VF(NL+2:M) contains
- the first components of all right singular vectors of the lower
- block. On exit, VF contains the first components of all right
- singular vectors of the bidiagonal matrix.
-
- VL (input/output) DOUBLE PRECISION array, dimension ( M )
- On entry, VL(1:NL+1) contains the last components of all
- right singular vectors of the upper block; and VL(NL+2:M) contains
- the last components of all right singular vectors of the lower
- block. On exit, VL contains the last components of all right
- singular vectors of the bidiagonal matrix.
-
- ALPHA (input) DOUBLE PRECISION
- Contains the diagonal element associated with the added row.
-
- BETA (input) DOUBLE PRECISION
- Contains the off-diagonal element associated with the added row.
-
- IDXQ (output) INTEGER array, dimension ( N )
- This contains the permutation which will reintegrate the
- subproblem just solved back into sorted order, i.e. D( IDXQ( I =
- 1, N ) ) will be in ascending order.
-
- PERM (output) INTEGER array, dimension ( N )
- The permutations (from deflation and sorting) to be applied to
- each block. Not referenced if ICOMPQ = 0.
-
- GIVPTR (output) INTEGER The number of Givens rotations which took
- place in this subproblem. Not referenced if ICOMPQ = 0.
-
- GIVCOL (output) INTEGER array, dimension ( LDGCOL, 2 ) Each pair
- of numbers indicates a pair of columns to take place in a Givens
- rotation. Not referenced if ICOMPQ = 0.
-
- LDGCOL (input) INTEGER leading dimension of GIVCOL, must be at
- least N.
-
- GIVNUM (output) DOUBLE PRECISION array, dimension ( LDGNUM, 2 )
- Each number indicates the C or S value to be used in the
- corresponding Givens rotation. Not referenced if ICOMPQ = 0.
-
- LDGNUM (input) INTEGER The leading dimension of GIVNUM and POLES,
- must be at least N.
-
- POLES (output) DOUBLE PRECISION array, dimension ( LDGNUM, 2 )
- On exit, POLES(1,*) is an array containing the new singular values
- obtained from solving the secular equation, and POLES(2,*) is an
- array containing the poles in the secular equation. Not referenced
- if ICOMPQ = 0.
-
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-
-
-
- DDDDLLLLAAAASSSSDDDD6666((((3333SSSS)))) DDDDLLLLAAAASSSSDDDD6666((((3333SSSS))))
-
-
-
- DIFL (output) DOUBLE PRECISION array, dimension ( N )
- On exit, DIFL(I) is the distance between I-th updated (undeflated)
- singular value and the I-th (undeflated) old singular value.
-
- DIFR (output) DOUBLE PRECISION array,
- dimension ( LDGNUM, 2 ) if ICOMPQ = 1 and dimension ( N ) if
- ICOMPQ = 0. On exit, DIFR(I, 1) is the distance between I-th
- updated (undeflated) singular value and the I+1-th (undeflated)
- old singular value.
-
- If ICOMPQ = 1, DIFR(1:K,2) is an array containing the normalizing
- factors for the right singular vector matrix.
-
- See DLASD8 for details on DIFL and DIFR.
-
- Z (output) DOUBLE PRECISION array, dimension ( M )
- The first elements of this array contain the components of the
- deflation-adjusted updating row vector.
-
- K (output) INTEGER
- Contains the dimension of the non-deflated matrix, This is the
- order of the related secular equation. 1 <= K <=N.
-
- C (output) DOUBLE PRECISION
- C contains garbage if SQRE =0 and the C-value of a Givens rotation
- related to the right null space if SQRE = 1.
-
- S (output) DOUBLE PRECISION
- S contains garbage if SQRE =0 and the S-value of a Givens rotation
- related to the right null space if SQRE = 1.
-
- WORK (workspace) DOUBLE PRECISION array, dimension ( 4 * M )
-
- IWORK (workspace) INTEGER array, dimension ( 3 * N )
-
- INFO (output) INTEGER
- = 0: successful exit.
- < 0: if INFO = -i, the i-th argument had an illegal value.
- > 0: if INFO = 1, an singular value did not converge
-
- FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
- Based on contributions by
- Ming Gu and Huan Ren, Computer Science Division, University of
- California at Berkeley, USA
-
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- INTRO_LAPACK(3S), INTRO_SCSL(3S)
-
- This man page is available only online.
-
-
-
-
-
- PPPPaaaaggggeeee 4444
-
-
-
-